home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_mailbox.py < prev    next >
Text File  |  2005-10-18  |  4KB  |  120 lines

  1. import mailbox
  2. import os
  3. import time
  4. import unittest
  5. from test import test_support
  6.  
  7. # cleanup earlier tests
  8. try:
  9.     os.unlink(test_support.TESTFN)
  10. except os.error:
  11.     pass
  12.  
  13. FROM_ = "From some.body@dummy.domain  Sat Jul 24 13:43:35 2004\n"
  14. DUMMY_MESSAGE = """\
  15. From: some.body@dummy.domain
  16. To: me@my.domain
  17. Subject: Simple Test
  18.  
  19. This is a dummy message.
  20. """
  21.  
  22. class MaildirTestCase(unittest.TestCase):
  23.  
  24.     def setUp(self):
  25.         # create a new maildir mailbox to work with:
  26.         self._dir = test_support.TESTFN
  27.         os.mkdir(self._dir)
  28.         os.mkdir(os.path.join(self._dir, "cur"))
  29.         os.mkdir(os.path.join(self._dir, "tmp"))
  30.         os.mkdir(os.path.join(self._dir, "new"))
  31.         self._counter = 1
  32.         self._msgfiles = []
  33.  
  34.     def tearDown(self):
  35.         map(os.unlink, self._msgfiles)
  36.         os.rmdir(os.path.join(self._dir, "cur"))
  37.         os.rmdir(os.path.join(self._dir, "tmp"))
  38.         os.rmdir(os.path.join(self._dir, "new"))
  39.         os.rmdir(self._dir)
  40.  
  41.     def createMessage(self, dir, mbox=False):
  42.         t = int(time.time() % 1000000)
  43.         pid = self._counter
  44.         self._counter += 1
  45.         filename = os.extsep.join((str(t), str(pid), "myhostname", "mydomain"))
  46.         tmpname = os.path.join(self._dir, "tmp", filename)
  47.         newname = os.path.join(self._dir, dir, filename)
  48.         fp = open(tmpname, "w")
  49.         self._msgfiles.append(tmpname)
  50.         if mbox:
  51.             fp.write(FROM_)
  52.         fp.write(DUMMY_MESSAGE)
  53.         fp.close()
  54.         if hasattr(os, "link"):
  55.             os.link(tmpname, newname)
  56.         else:
  57.             fp = open(newname, "w")
  58.             fp.write(DUMMY_MESSAGE)
  59.             fp.close()
  60.         self._msgfiles.append(newname)
  61.         return tmpname
  62.  
  63.     def test_empty_maildir(self):
  64.         """Test an empty maildir mailbox"""
  65.         # Test for regression on bug #117490:
  66.         # Make sure the boxes attribute actually gets set.
  67.         self.mbox = mailbox.Maildir(test_support.TESTFN)
  68.         self.assert_(hasattr(self.mbox, "boxes"))
  69.         self.assert_(len(self.mbox.boxes) == 0)
  70.         self.assert_(self.mbox.next() is None)
  71.         self.assert_(self.mbox.next() is None)
  72.  
  73.     def test_nonempty_maildir_cur(self):
  74.         self.createMessage("cur")
  75.         self.mbox = mailbox.Maildir(test_support.TESTFN)
  76.         self.assert_(len(self.mbox.boxes) == 1)
  77.         self.assert_(self.mbox.next() is not None)
  78.         self.assert_(self.mbox.next() is None)
  79.         self.assert_(self.mbox.next() is None)
  80.  
  81.     def test_nonempty_maildir_new(self):
  82.         self.createMessage("new")
  83.         self.mbox = mailbox.Maildir(test_support.TESTFN)
  84.         self.assert_(len(self.mbox.boxes) == 1)
  85.         self.assert_(self.mbox.next() is not None)
  86.         self.assert_(self.mbox.next() is None)
  87.         self.assert_(self.mbox.next() is None)
  88.  
  89.     def test_nonempty_maildir_both(self):
  90.         self.createMessage("cur")
  91.         self.createMessage("new")
  92.         self.mbox = mailbox.Maildir(test_support.TESTFN)
  93.         self.assert_(len(self.mbox.boxes) == 2)
  94.         self.assert_(self.mbox.next() is not None)
  95.         self.assert_(self.mbox.next() is not None)
  96.         self.assert_(self.mbox.next() is None)
  97.         self.assert_(self.mbox.next() is None)
  98.  
  99.     def test_unix_mbox(self):
  100.         ### should be better!
  101.         import email.Parser
  102.         fname = self.createMessage("cur", True)
  103.         n = 0
  104.         for msg in mailbox.PortableUnixMailbox(open(fname),
  105.                                                email.Parser.Parser().parse):
  106.             n += 1
  107.             self.assertEqual(msg["subject"], "Simple Test")
  108.             self.assertEqual(len(str(msg)), len(FROM_)+len(DUMMY_MESSAGE))
  109.         self.assertEqual(n, 1)
  110.  
  111.     # XXX We still need more tests!
  112.  
  113.  
  114. def test_main():
  115.     test_support.run_unittest(MaildirTestCase)
  116.  
  117.  
  118. if __name__ == "__main__":
  119.     test_main()
  120.